<html>
    <head>
        <title>预定义过滤器 </title>
    </head>
    <body>
        <script>
            /*
                        一、预定义过滤器   

                                ABP定义了一些开箱即用的过滤器。


                                1、 软删除过滤器 ISoftDelete

                                            用于将实体 "标记为已删除" 而不是实际删除它。

                                            实现ISoftDelete接口以使你的实体“软删除”。

                                            eg:

                                                using System;
                                                using Volo.Abp;
                                                using Volo.Abp.Domain.Entities;

                                                namespace Acme.BookStore
                                                {
                                                    public class Book : AggregateRoot<Guid>, ISoftDelete
                                                    {
                                                        public string Name { get; set; }

                                                        public bool IsDeleted { get; set; } // ISoftDelete 接口定义的属性
                                                    }
                                                }

                                            ISoftDelete定义了IsDeleted属性。

                                            当你使用存储库删除一本书时，ABP会自动将IsDeleted设置为true并保护它不被实际删除
                                            
                                            （如果需要，你也可以手动将IsDeleted属性设置为true）。

                                            此外，当你查询数据库时，它会自动过滤已删除的实体。


                                            ★、ISoftDelete过滤器默认启用，除非你明确禁用它，否则你无法从数据库中获取已删除的实体。请参阅下面的IDataFilter服务。



                                2、多租户过滤器 IMultiTenant

                                           多租户是创建SaaS应用程序的一种有效方式。

                                           创建多租户应用程序后，你通常希望在租户之间隔离数据。

                                           实现 IMultiTenant接口以使你的实体“多租户感知”。

                                                eg:
                                                    using System;
                                                    using Volo.Abp;
                                                    using Volo.Abp.Domain.Entities;
                                                    using Volo.Abp.MultiTenancy;

                                                    namespace Acme.BookStore
                                                    {
                                                        public class Book : AggregateRoot<Guid>, ISoftDelete, IMultiTenant // 多租户感知
                                                        {
                                                            public string Name { get; set; }

                                                            public bool IsDeleted { get; set; } //  ISoftDelete 接口定义的属性

                                                            public Guid? TenantId { get; set; } // IMultiTenant 接口定义的属性
                                                        }
                                                    }

                                                IMultiTenant接口定义了TenantId属性，然后用于自动过滤当前租户的实体。有关更多信息，请参阅多租户文档。

                    */
        </script>
    </body>
</html>